use std::fs::File;
use std::io::{self, Read};
use md5::{Md5, Digest};

fn main() -> io::Result<()> {
    // 指定要读取的文件路径
    let file_path = "../file.txt";

    // 打开文件
    let mut file = File::open(file_path)?;

    // 创建一个 Md5 哈希对象
    let mut hasher = Md5::new();

    // 读取文件内容并更新哈希对象
    let mut buffer = [0; 1024];
    loop {
        let bytes_read = file.read(&mut buffer)?;
        if bytes_read == 0 {
            break;
        }
        hasher.update(&buffer[..bytes_read]);
    }

    // 获取最终的哈希值
    let result = hasher.finalize();

    // 将哈希值转换为十六进制字符串
    let md5_hash = format!("{:x}", result);

    // 输出 MD5 哈希值
    println!("MD5 hash of the file: {}", md5_hash);

    Ok(())
}